Copyright (c) 1999 Massachusetts Institute of Technology

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, see https://gnu.org/licenses or write
to:
  Free Software Foundation, Inc.
  51 Franklin Street, Fifth Floor
  Boston, MA 02110-1301
  USA
------------------------------

This file used to named  SYSTEM;ITS RECENT.

This file logs significant changes made to ITS.  New changes are added
just above the line that starts with a row of dashes.  Lines that start
with brackets are the version number and date of an installed system.

.CALL ATTACH - new features
.CALL SIOT - byte-string I/O
.CALL DISOWN - new call, new features
MEMBLT format change
Printing of NXM map when system comes up.
On ML, checking for bad mem switches when system comes up.
Putting time in ITS IN OPERATION etc. messages.
Pure-code feature of pager now works.
.USET on BOJ device
.REVIVE NOP if not dying
Error-code arguments in .CALL
measure run-time of core-job properly
conditional out microtape code
USEMDM switch
don't return to DDT after system shutdown until all dirs, etc. out,
 utapes flapped, and jobs killed.
7'th result of .CALL SSTATU is system version number in sixbit
parity error in pure page only interrupts the job that was running
ability to make links through job devices
.SUSET .RSUPPRO
BEG calls SALV
.HANG on TRN, TLN
^_ digits takes any number up to non digit or ignored space
^_ ^B etc. sets bucky bits
%TSFCO full char set output/echoing (control as alpha, etc.)
[946]
at slow clock level, xct ttyst for ttys with ttyoac on and ttltm > 1 sec ago
mlink should give error if not disk or job channel
[947]
KL10 disk code
atsign device should know about "non-directory device"
routine for SIOT for disk & other BLKT devices
rearrangement of user variables to match kl10 user process table (ifn kl10p)
 i.e. setting up trap words etc. + how to hack uuoacs in kl10
SIOT for sty
KL10 cache sweep code
KL10 tty code
KL10 micro code
KL10 page fail code and clock level
user who lines
no more automatic closing of I/O channels at EOF.
Microtapes have to be assigned before they can be used for anything.
echoing of rubout
uniform -1,,3 for eof on all devices in unit ascii input mode (except TTY, dammit!)
[979]
PGDUMP system call
reap bit, author, quotas (SEC's disk stuff)
misc bug fixes
deletion of some old message routines in favor of SYSMSG
[982]
rauth, sauth system calls (SEC'S disk stuff)
New tut format for RP03 and RP04 - partly gone
Fix unit mode I/O on USR device to advance the access pointer
making net not close channel at "eof" -> IOC error number will change; check programs
 in unit ascii mode there will no longer be an IOC error when close -    "      "
[984]
Finish DC76 code
Finish KL paging initialization
Rework KL paging/clkbrk code
Reverse sense of age bits in page words by changing KL10 ucode
3-bit bytes in tuts
more disks on ML and DM; more directories on ML
[986]
KL bug fixes
%TPCBS => ^\ is special on tty input -> for intelligent terminals
SCHBLN on ML
Remove "last bug" from PDUMP
[988]
symbolic ITYIC; ordinary ITYIC passed as a symbolic ITYIC to job devices
superimage output SIOT on tty => high-efficiency mode
DIRSIZ to hack quotas and read # blocks in all files in a directory
SCPOS to hack setting tty cursor position for software tty styholders
 and superimage outputters
Com mode simplification and improved query mode.
SCHBLN on AI
ATTACH takes tty spec as arg
Symbolic IOPUSH and IOPOP
System console can be used as a user console
^PA - proceed to column 0. If you pass the end of the line, collect 1 linefeed.
KLPERF system call for hacking the performance counter
Open-loss "channel not open"
[994]
DETACH and DISOWN can cause tree to be killed after 1 hour
KL - detach on hangup
KL - Improve autospeed code
20KILL allowed after a 5KILL has been done.
Symbolic "RCHST" (actually called "RFNAME").
Real TTY's may be run as "Software TTY"'s.
SETLOC detects that SYS job is hung and does the job itself.
DM Demon signaller no longer uses FINSET; all FINSETs flushed.
NNSKED, NRSKED meters
Gould line printer
Handling of parity errors on KL10
OPTOPC
Improvements in system shutdown
TREESW
XDDT$X, XREVIVE$X
Symbols for UMAPS bits
Deletion of OPTDET; reload on top-level interrupt never occurs now
Optional automatic saving of ACs, .JPC, .UUOH, LSPCL in new-style interrupt
.CALL DISMISS can pop the above
.CALL RCHST
Deletion of .CALL BREAK
Deletion of LDISOW
Other-machine devices no longer built into the system; use unknown-device handler
Arg2 + Arg3 for .CALL JOBSTS; RH(.STATUS), device name for who lines and peek
EVSYMS file
SUPCOP
[1000]
%TNMEM
OIPBIT
New meters NSSKED, NRESKED, NNULBK, SLOADU
Improvements to TV run-light blinker
New .CALLs:  FORCE, JOBIOC, NETAC, NETINT, REOWN
DETACH ctl bit 1.5 suppresses console-free message
Fix the "last" bug in PDUMP
Delete SJDH
Computation of maps and memory free lists and number of DDT pages at system startup
[1003]
Remove ARDS support; add Tektronix support
Add TTDIIM, TTDVT, TTDRAN
Add meters NAGEAB, NSHRAB
Delete superfluous user variables LSPCL1, LPFBTS, UDBR1, UDBR2, UCPB1, UCPB2, UTRAPM
OPTTRP is sign bit of OPTION; replaces UTRAPM
Make VALUE not take a separate word in user variables
Improvements to bringing up of the network (eliminate infinite NETWORK UP AGAIN lossage)
LOSRCE, IDLRCE, NPGWTU
.XJNAME user variable
.LOSE UUO, LOSE system call
Really fix the last bug in PDUMP
Improvements to CORBLK
NUL device changed to give immediate EOF on input instead of infinite zeros
Swapping algorithm enables: ENSWSC, ENUPC, ENPZRO, ENAGE, ENSWBK, ENPVCL, ENPREE
Ability to determine memory size on KL10 (NXM doesn't work on our machine.)
Debug RP04 ECC stuff
FILLEN works for disk output channels
Simplify core job - eliminate shuffling of system pages and eliminate
	shuffling of 200-word buffers (except network buffers)
	thus flushing thousands of timing and pclsring bugs.
	Direct mapping always on => low-core is still big enough.
Symbolic socket states and close reasons for Arpanet
Arpanet gives interrupt if output buffer goes from full to not-full.
Fix Arpanet bugs: timing out, Santa Claus, extra words at end of message.
SUPCOP => system jobs hangs rather than sleeping.
Fix many erroneous bits in system job dispatch table.
System job can use any console (fakes IOCHNM word).
User who-line variables.
%PIATY
Intelligent terminal protocol now works.
%TCFPD
Make disappoints work better
Find out number of TVs at system startup.
Non software-tty STYs can get %TDORS.
Fast SIOT in super-image output to TTY.
[1006]
Add new meter NAGES
Fix bug with IOT UUOs on KL10 causing spurious MPVs
Turn on indirect bit in .MARPC if instruction completed
AGERTE enables page-ageing
.CNSL user variable
Support CAIA ? CAIA ? .HANG and SKIPA ? SKIPA ? .HANG
Feature for DISMISS to lose if given 5 arguments
Bells in ITS in operation message
**MORE** interrupt goes to same channel as was IOTing on.
Less cryptic messages in communicate mode.
Full support for disappoints.
[1008]
Flush OQDTSW (finally!)
KL: Use hardware clocks in KL-UDGE
Allow up to 99 jobs (up from 63).  Limit of 99 is in who line routines, I think.
Eliminate UCLOSE PCLSR bug.
RFPNTR system call
RFNAME system call
FORCE and FLUSH system calls.
Reorganize I/O device tables a little.
Allow unit mode input .CALL IOT to use an output arg instead of a clobbered input arg.
Flush CREAPB system call
Rename PGDUMP system call to PGWRIT; old name will stay around for a while
Flush PDUMP mode; greatly simplify PDUMP system call.
  This surely fixes the "last bug in PDUMP."
Handle MMP full as NO CORE error rather than crashing the system.
Fix bug in unit image input from directory. (Probably crashes system).
Init dial-up lines on dialin rather than logout.
Fix bugs in control link RFNM timeout on arpanet.
If ARPANET socket found to be closed on input, eof if closed
	normally by foreign host, IOCER 10. otherwise.
If ARPANET socket found to be closed on output, IOCER 10. (was 8).
Misc. ARPANET bugs.
%TDFS, %TDMV0, %TDCLR tty output buffer codes
Use tabs for cursor positioning on display ttys that have them; use
	VT52 absolute cursor positioning if enabled.
Putting EXEUMP and EXELMP in system's UPGMP; not having MMP entries for sys job pages.
New corblk codes %JSNEW and %JSABS.  400000 now copies from exec address
 space instead of real abs pages; 400001 is still fresh pages for now.
Arpanet: free output buffer space as soon as sent instead of waiting for RFNM.
NLOAD needs a new open loss code - done.
Retain sharable pages in core for a while when no one is using them
MMP hash table
MMP free lists changed to use addresses instead of indices;
 there was a bug which luckily just caused one MMP entry never to be used.
Fix "last bug" in swap read errors.
For a disk open that fails after going through a link, a special
	error code to reduce confusion of DDT and users.
.CALL STLGET
2-minute clock checks for clobbered devices
Disk .CLOSE waiting kludge removed; .CALLs FORCE and FLUSH implemented for disk.
Fix "last bug" in shutdown.
Disk FORCE not allowed in unit ascii mode.
[1013]
Absolute cursor positioning on VT52s if PADTAB=2
Bug in QUDS caused files to get concatenated.
[1016]
Flush old misfeature that writing in NXM in inferior creates the core.
Problems with one job outputting to core link, receiver closes, transmitter
	hangs forever - transmitter's output ought to get discarded.  
If a network socket enters an "unhappy" state while job
	is hung in IOT on it, and IO interrupts aren't enabled,
	give it an IOC error.
Fix VT52 ^S/^Q lossage by not using direct cursor positioning at 9600 baud.
KL10 - handle page faults with clkchn in progress rather than off.
Unhang hung disk controllers.
Recover from reset button getting pushed on S.C. controller, also
	handle internal parity error.
Fix bug causing magtape timeouts to be very random - magtape didn't
	get polled when disk was idle.
Unhang ML LPT when it loses its PIA.
KL10 - provision for .LSPBR user variable (lisp GC instructions)
LH(.40ADDR) is address of 20-wd block for DDT to hack in (if 0, 20).
Rename .SNAM user variable to .SNAME
KL10 - fix bugs in one-proceed.
Remove machine-independent one-proceed "feature".
SIOT allows indexed byte pointer.
3.5 mode bit in DSK open allows links to be "opened."
JOB device calls use %PCFPD bit to detect pclsring.  New bit 3.8 in first val of JOBGET.
Fix bug with IOCERRs in JOB devices getting left after close and given to next user.
Put CRLF at end of TTY^F (for IEC, mostly).
Fix bug that user can map nxm abs pages.  (introduced in 1013.)
Intelligent terminal protocol - ^\^C => screen has been surreptiously altered,
	set %TSATY and %PIATY.
MC - multiplexor kludge to building 38
Arpanet - 3.7 mode bit in open => use 2000-wd buffer (otherwise 200-wd).
	Many improvements/bug fixes/dekludgifications.
Disk pack reservation stuff stored in tuts instead of going by drive number.
Unit ascii mode and SIOT output to disk, tape (BLKT devices) will
	zero the extra bits at the end of each word.
Typing out space is equivalent to cursor motion even on non-overprinting ttys.
Allow embedded blanks in links (quoted with :).
New fast disk directory garbage collector.
[1018]
Remove typing out space equivalent to cursor motion feature - screwed datapoints.
%NCRFS
.CALL MLINK does .CLOSE 0, if it succeeds - fix this.
When TV11 goes down TVCREG of a job using 11, e.g. D, gets screwed up.
	Not fixed up by reattaching.  Mostly fixed, but alu function will be lost.
Top level interrupt job detached gives octal PIRQC on system console.
	No longer tinges daemons with mortality.
REOWN sets reowned jobs' XUNAME to reowners - fixes bug in :NAME
	- FLUSHED.  DOING THIS CAUSED OTHER BUGS.
[1020]
%TBOUT, %TBINF bits in TTYTBL
Fix to:  In negative SYSDBG mode, losers can get in by linking to a sty tty.
OPTLKF bit in .OPTION which says unlock locks on top-level-fatal-interrupt.
TYOLTB per tty instead of per TCTYP (TTYROL) and .CALL CNSROL to hack it.
If PDCLK jumps ahead of TIME more than 5 seconds and less than an hour, probably
	the system was stopped at a halt or breakpoint and then continued,
	so all jobs should get going down interrupt (DDT will print "ITS REVIVED!")
.CALL DELEWO
Fast SIOT for Arpanet output
.CALL STYNET - direct connect STY to NET
On SAIL ttys, echo control characters with uparrow instead of circumflex.
Fix bugs in .CALL FORCE in write over mode. (FORCE loses, FLUSH hangs forever.)
Disk FORCE screws in unit ascii mode (.ACCESS is by words) -- taken care of.
Byte size support for disk files:
	The system remembers the size of bytes a file was written with
	and the number of bytes in the file.
	OPEN => a byte size.  For now, unit ascii = 7, otherwise 36.
	ACCESS and RFPNTR are in terms of the byte size opened in.
		RFPNTR returns a second value, the byte size.
	FILLEN returns 4 values:
		length in byte size opened in.
		byte size opened in.
		length in byte size written in.
		byte size written in.
	This involved changing the conventions for BLKT/CHRKT/SIOKT.
Various losses/infinite hangs involving swap read errors fixed (for the nth time).
Seek overlap on S/C disk controller.
Eliminate hair for deleting file on deceased pack - tut differences don't matter
	much, and ufds will be inconsistent anyway, can never use ufd copies
	on pack that wasn't mounted when the system ran one day.
  ->	Also, salvager should probably check for packs whose MFD has a smaller
	ascending master dir number and require you to do a UCOP to that pack first.
Disk scheduler performs poorly under heavy load, i.e. on DM.
[1024]
%TPTEL treat CRs in the way Telnet protocol wants (on input).  Needed for STYNET.
COD: device ignores whether it was opened for input or output (maybe others too)?
Flush vidis, Dinwiddies, etc. if they haven't been already.
Support for an optionally-present secondary disk pack.  SECOND: device.
OPT => %OP to get rid of random predefined non-% non-$ non-. symbol?
Rubouts should "work" in com mode on display ttys.
Allow a device job to be reused for more than one OPEN, if it agrees. (.CALL JOBREU)
Fix bugs with pclsring, iopdl, etc. in job devices.
Make SIOT and byte-size stuff work on job devices.  Necessary to do
	do this so TECO can use new style stuff. 
Make it possible for PDUMP to save ACs, and for LOAD to load them from
 pdumped files.
Allow selective loading.  E.g. only within certain address boundaries,
 or only pure pages.  For DECUUO, dumped tecos, maybe dumped lisps?
 3rd arg to load is first,,last or 0 to load only pure
USRVAR, TTYVAR symbolic system calls.  This also implies that when
	.USET and .SUSET ILUUO they will store opn-loss codes.
[1036]
6-character device names in the system.  MEANING OF %DVDEL BIT REVERSED.
	Also devices that used to ignore .FDELE now OPNL34.
Flush both-directions-open stuff on job devices.
Restandardize arguments to TTDxxx macros.  Now uses mainly keyword parameters.
Change KL10's XCTR XEA, from 14 to 16 to make indexed executes work right.
PDP6 has a .UIND user variable.  Symbol %JSSIX selects the pdp6.
Wait for DIR and DSK channels to become available instead of erring out.
New disk directory flushing code - caveat haquur!
Delete %TICLC
Add %TNDTM (Datamedia support).
	Reverse order of args to Imlac cursor motion code.  (Taken out again.)
Error codes for OPEN on NET device grossly screwed around with.
Accounting updates - two minute clock picks a job tree and calls LOGUPD
%TORAW is no longer the default.
TTYGET no longer returns ISE0 if channel not open.
It works to set one's own .JPC.
[ITS 1043]
You can reown yourself!
An "echo" that only forces out buffered cursor motion
	shouldn't set %TCECH - ^S lossage on TIPs.
^_CFOO^^ kludge for IEC.
.LOGOUT N, => .BREAK N,33 if not top level.
Speed up typeout on TVs by not checking redundantly for buffer over-run.
Abandon AI LPT.
Note conversion of wierd non-ascii controls to ascii on %TOFCI tty was changed.
[ITS 1047]
Don't buffer more output than allocated feature on arpanet (mode bit 3.8).
STYNET mode now works.
Miscellaneous changes to output on glass ttys
Show both phy and vir pages in user who line
Add immediate instruction arguments to USRVAR/TTYVAR
Fixes to JOB device open and pclsring
Top level interrupt job detached informs owner
Fix IDX column of TTY^F
Change format of scheduler history table a little (overflow in user index and runtime fields)
[1050]
8-bit bytes in TV-output buffers (instead of 16.)  Still to be done: word at a time
	tty output siot.  Requires some restructuring of code. - hard to avoid some bugs.
Rename .CALL FLUSH to FINISH.  Old name stays around for a while.
Better disk error reporting on RH10/RP04.
Have who line show # pages swapped in as well as total # pages.
[1052]
Control-Call and ^_D are deferred call.
Start adding multiple ttys through DTE20.
Fix some moreing and glass tty bugs.
TTYROL on a printing terminal is now 1 (formerly 0) - don't forget to change TCTYP
Fix CORTYP on a PDP6 inferior to not crash system.
USR job-creating open kills the job if no core available instead of failing
  but leaving the job around.
[1057]
Flush new SC disk stuff; ATTN and CURRENT CYLINDER register lose randomly.
Insert and delete lines and characters on TVs.  Scrolling.
.CALL USRMEM
Fix more Arpanet & direct-connect bugs
BOJ block IOT in don't hang mode now doesn't hang if the creator
	is not in a corresponding JOB IOT.
Scrolling on TVs.
[1066] 5/30/77
Alpha echoes as alpha, while ^B echoes as ^B.
.CALL TTYFLS allows you to flush all tty input chars up to the last one ITYIC'd,
  or flush just that last one.
DNRF device is like DSK but doesn't set the file's reference date.
Opening DIRHNG:FOO; gives you a channel that interrupts whenever anyone
  writes in directory FOO.
TRAP: device to allow faking out of inferiors - all system calls
  on such a device trap, including OPEN, but TRPOPN .call allows superior
  to open it for the inferior.  CLOSE does not trap, which is vital!!
ISPEED/OSPEED TTY variables (read only).  Also change speed codes to 4 bits.
  These variables are in bauds, not internal codes.
  TYEEO3 is fucked.  Also TYPBP1 needs to be fixed.
Finish flushing 2741s.
RCPOS, SCPOS, LISTEN, FORCE, and FINISH allowed under $$^P.
TTYSMT (SMARTS) variable to hold info on what sort of programs a tty can load,
  what graphics options it implements, etc.
CHAOS net
SWPWSP started, but not finished yet.
Settable block size on magtape via .MTAPE and flushing of chunk mode.
New IOC errors 12 and 13
Locked-down pages; see CORBLK and PGWRIT system calls.
Fix loose-page bugs by maintaining RH(MMSWP) correctly.
Final version of USRMEM
  But still needs to learn how to turn into SETLOC if writing system.
PAGEID system call and associated crud flushed.
More error checks in CNSSET etc.
%TPPRN
Attempt to make nulls outputtable to MTY
Symbolic ATTY, so you need not have a job open to use it fully.
Store the UWHO variables on non-tv systems for benefit of user
 programs to generate who lines.
Make MAR work correctly on KL10 (formerly OPTOPC had to be on.)
Device name table - negative LH is sixbit short name, else
  is pointer to sixbit long name.  Change chaos, dirhng, trap.
  Note that this changes what .GETSYS of CHDEVS returns.  Who cares?
.CALL DL10MP
Flush NEWDTE conditional.
.HSNAME user variable (home sname)
[1091] 11/11/77
.LSPBR flushed due to > 100 uset variables!  Magic number for .HSNAME
 changed from 100 to 43 .
Fix up SWPWSP so it may work
Really make MAR work on KL10 when OPTOPC is off.
Reset speeds to zero when a STY is handed out.
HELP key (TOP/H, ^_H) always returned even if not in full character set mode.
Additional hair at TYOMT4 to try to make echoing work right.  Loses, flushed.
Flush even more vestiges of 2741's.  Speed code 0 now means unknown, not 134.
Fix CHAOS bugs, add 5th result to CHAOS WHYINT.
Fix bug with wrong spacing between mores on scrolling terminals introduced
 into ITS 1036 or thereabouts.
Fix bugs with over-AOS and over-SOS of SUSRS.
[1097] 12/5/77
.MTAPE 13 returns block size of last record read.  You should gobble
 the first word of the record then do the .MTAPE.
Add new swap and pagein history tables.
Change ACCESS to give error on wrong type device, instead of claiming
	to succeed.  This also gets rid of special job op for .ACCESS,
	now it just comes through looking like a symbolic system call.
Fix parity error handling on KL10s.  Was completely fucked.
Minor fixes to swap-out routines, and to hsname.
Error code returned for network went down changed from 34 to 41 (arpanet).
SCML changed to work if you don't have the tty
Fixes to SCPOS bug, link to multiple ttys same name bug, scrolling bug.
[1099] 1/15/78
RFNAME on DIRHNG returns correct dir name, zero file names.
Save and restore tty user-options across detach/attach.  (STTYOP)
TTYESC .CALL
Say system full if there aren't 100 mmp entries left. (on ^Z)
Fix bug in %OPLKF on KL10
For RH10 disks (mainly RP04s), know about "recoverable" unsafes.
1.3 control bit to ATTACH causes job to start after it is attached.
Readahead on mag tape, to make reading much faster.  Note that an
 incompatibility in .MTAPE was introduced; the stop call doesn't
 compensate for read-ahead.  Conditions under which .MTAPE writes back the function
 word changed slightly, but, then again, the old code had gross pclsr bugs.
 Kludge that a count of 0 in a spacing command means 1 retained.  Update documentation!
Fix bug where FORCE on unit-ascii disk channel didn't pad
Further changes to TYI to ignore top-letters except HELP when not in full char set mode.
Fix bug in %CBLOK feature that crashes system if it is used.
Fix AC conventions in LOSSET routines NJBRUL, QCHNRT.  They are commented now!
DISOWN (etc.) now only closes inferior channels, not foreign-job channels.
Fix bug in deleting links to dirs with a leading space in the name.
[1102] 3/3/78
Fixes to Arpa network control-message-queue overflow bugs
Overhead metering (only works on KL10s)
[1105] 3/22/78
New chaosnet protocol, .CALL PKTIOT, change to chaos IOT, direct connect for chaos.
Fix bug in RFNAME on DIRHNG:
.NETS is now just a uuo version of .CALL FORCE
Change RENAME and DELETE to give file-locked for *-files
Change >-lookup to notice *-files
Fix bugs in IDLTIM ttyvar, ^\^C
Fix TRAP device
Fix bugs in disk FINISH, PDUMP with %QAACC set.
[1111] 5/2/78
Fix bugs in job device
Arpanet extended leaders (incompatible changes to be noted here)
  - RCHST no longer returns byte size
  - see NETHST, NETIMP.
Add TTYSMT as alternate name for SMARTS tty-variable.
%TOSA1 no longer controls echoing, only output.  This change also admits 0
 (center dot) as an OK SAIL character. 
QSNNR bug fixed! At least one possible cause.
DNR: as a synonym for DNRF: for the sake of DIRDNR: for $$^F.
PIRQC 4.9, if set, pclsrs the job but doesn't give an interrupt.
 The Arpa and Chaos nets need this to arrange for IOC errors at the right times.
[1115] 5/27/78
The following items deleted from the AI system (softwarily):
   340, DSD, OMX, IMX, N D/A, PDP6, H CLK
Fix bugs in disk code with respect to DELEWO and to FORCE
Fix over-run bugs in mag tape code
Add run-time-field to SWPHTB and PGIHTB, temporary(?) for metering
[1117] 6/30/78
PAGPRE - pageing preemption without SWPWSP
Additional metering to try to find why there are so many "real" schedules
Bug fixes: paging, tty code.
At TYMTB3, if home up is better, check whether abs positioning is even better.
  This will eliminate superfluous extra home-ups on VT52s.
When cursor positioning with tabs, if told to go one char past the right
 margin, will try to do it with tabs and really mess up on VT52.  However,
 will probably mess up on any other terminal, too.
[1121] 8/8/78
Fix interrupt at wrong time bugs in Chaos NCP.
A location RVVTIM recording the last time the system was revived - TAA
Flush the misfeature that 1200-baud printing terminals are Terminets.
  Note problem with the motor turning on and off when using CRTSTY.
[1122] 8/19/78
Fix MMPTMP bug in .CALL PGWRIT, caused halts at SWPACT+6 and QSWPFN+23
New Chaos protocol, never-ending stream of Chaos bug fixes
Additional metering
New resources of various sorts (memory, MMP, STYs, jobs) for MC
Expunge useless symbols like FOO to save space in the system.
FIX YET ANOTHER BUG ASSOCIATED WITH MOVING OFF RIGHT MARGIN OF A
  DISPLAY - THIS CAUSED VT52 TO HANG OUTPUTTING INFINITE TABS.
[1127] 10/3/78
There is a deadly embrace where the Arpanet wants to go down, but the sys
 job is waiting for the core job which is trying to shuffle an arpanet buffer.
 THIS IS FIXED BY CLEARING ACTIVE-AT-PI BITS WHEN NET GOES DOWN.
MORE CHAOS NET BUG FIXES AND PROTOCOL CHANGES
Add checks in case ac-block selection loses
[1128] 10/16/78
Fix yet more Chaos net bugs
RENAME on core-link crashed the system
.SHUTDN could shut the system down in 0 seconds
[1131] 11/21/78
Image-mode block-IOT output on NET device transferred one word
 when it should have transferred zero.
Fix yet more Chaos-net buffer list bugs, also bugs introduced
  when RFC-retransmission was put in, involving %CFOFF
Who-lines display wrong thing for 6-character devices (CHAOS)
[1133] 11/30/78
Bug where when using unit-mode input to EOF then doing SIOT would
 loop in the system - added instruction at CHRKT1.
[1135]
Fix "last bug" in CHAOS (CHAQSR)
Fix bug that you could get write access to abs pages
Add error-check at UBLST4 attempting to track down "ZUSER2" crashes.
[1136] 12/15/78
Fix FII32 bug for DM Imp interface, set DM system console to 0, ignore NXR/NXS on Arpanet,
 make Arpanet work if non-zero network number supplied in host number.
bug at typors crashes system at typda1 by clobbering t
Do XCTRI XEA at PFA12 by hand to see if this instruction sometimes fails
 and causes famous "indexed XCT" failure.
Use performance counter for accurate CPU-time metering, when a user isn't using it
[1138] 1/4/79
Fix loop at ACMTC, in somewhat unsatisfactory way.
Get rid of old Plasma "multiplex" lines, add 8 more STYs.
[1142] 1/27/79
mag tape IOT didn't use SIOKT if SIOT was used, causing anomaly at EOF
Add support for Teleray 1061 and HDS Concept-100 terminals,
 involves improvements to padding and abs-positioning code.
^PA now always erases to end-of-line, whether or not it crlfs first.
Fix bug in PAGPRE code probably causing FLSINS instructions to skip
 prematurely - loss was if a pre-empt failed and the current job had
 just uflsed, it went ahead and ran it again without checking the flsins.
Disk-file author code uses HSNAME if UNAME not identifiable with a dir.
[1144] 3/5/79
large memory on mc
[1145] 4/4/79
Fix long-standing bug in .UTRAN!
Fix the last bug in the CHAOS NCP
Increase the numbers of job slots and disk channels for MC; a better
 way of dealing with the cretinous deadlock for disk channels needs to be devised.
[1148] 4/13/79
Fix Arpanet NCP to delay sending a CLS until after a RFNM comes back.
	- bug found by OTA
Support multiple secondary packs; QTRSRV field is now the device-name for
	writing on the pack (if not 0 or -1).
[1150] 6/79
Increase max virtual core on MC to 3.5M.
Turn off redundant checking in CHAOS code, it clearly works.
Fix bugs with TTY padding that were crashing system
 when you had a 1200-baud printing tty with padcr=1
Make the 2-minute clock (actually UTBFLF and UFDFLF) swap out
 all loose pages, to fix a bug where loose pages could stay around
 for a long time in MC's memory, tying up the disk space occupied
 by a deleted file.
[1150] 6/15/79
Found bug in assembly-time test for exceeding 6 bits in IOBFT channel number codes.
Use a better checksum algorithm across the 10/11 interface for the Chaos net.
[1151] 7/79
Fix system deadlocks caused by %CBLOK-locked-down pages using up all the core
 pages which want to be used for I/O purposes.  Simple-minded change is to
 ignore MMPLOK bit in that case.
Expand MEMLZL and MEMLZH to 8 locations each so multiple ranges of memory
 can be patched out.  Especially important when you have interleaving.
Get rid of the .HKALL before the system initialization since it causes more
 trouble than it saves.
Fix bug causing infinite hang in FINISH call on write-over channel near EOF
Fix deadlock where system won't come up because the NUJBST buffer is full
 of network servers and the system job is trying to start the daemons.
 Code was completely brain-damaged.
Fix bug in file system where QAUTH could pclsr, leaving a half-created
 file that claims to have been written on pack 0.  I'm not sure this
 was the only source of this symptom but it's certainly one source.
 This may have also been the cause of the duplicate files with the same
 name (typically _DRGN_ BUFFER).
Move TUT header to front in preparation for T-300 support on MC.
.CALL ECHOIN
Maybe CALL should do an input-reset?  Currently DDT does one, but there's
 often a significant delay before it happens. (rwk, eak)
 I'm not sure but I think it does one now.
[1154] 9/6/79
Deadlock with allocation of directory slots: If you run a program
 such as :DSKUSE $ which just reads all the dirs, it hangs up waiting
 on QFUD with QSKOSW locked; however the automatic QDFLS in QFLDF
 only happens with QSKOSW locked, so no other job can get in to
 do it.  Also it would appear that nothing tells the core job to
 do it, at least not often enough.
 Fixed by making QFLDF keep trying the QDFLS over and over.
Read-compare for ML
[1157] 9/13/79
Increase maximum size of a disk address from 15 bits to 18 bits
 most places; still limited to 16 bits by UFD descriptor format
 (could easily be expanded to 17).
[1158] 9/15/79
Support for T-300 disk on MC.
[1160] 9/18/79
[1163] 10/18/79
Make switch 0 go to DDT, even if system not being debugged.  This is
 because the address switches on the AI machine are so marginal.
 Hopefully this switch won't get set accidentally too much.
Fix total brain-damage in the RP-10 disk code that caused it
 to ignore errors on the last block in a cylinder.  This was causing
 the read-compare errors on ML.
[1164] 10/29/79
Region scrolling - %TDRSU, %TDRSD, %TPRSC
Fix bug that enabled interrupts in TVBNCL and caused crash at TYOAS7 in echo code.
Spell %TDGRF uniformly everywhere, was %TDGPH in one place.
Get rid of routine LOOSCH in CORE -- obsolete temporary bug check
Eliminate possibility of reused disk addresses ("Y files")
 by keeping on-disk structure consistent.
Remove obsolete bug check from QFLD
MAXJ was inaccurate due to rounding problems
Bits 1.9-1.7 of .STATUS had been broken for some years.
Fix bug in BOJ device causing halts at CFH2+22 on KL's.
Change CHAOS code minimally to allow Muppets to pass through
 uninterpreted.  This will need to be done over better at some later time.
[1168]
Page-ahead and write-behind features (involves making >100 user variables work)
Fix pdl-underflows in magtape routines.
Fix bug where on KL's run time was accounted only in user mode.
On KL, CFF1 could get to UFL1 with clock PI in progress, causing loop
 at UFL6.  Bug was introduced when page fault was changed to actually
 cause a PI7 interrupt rather than just simulating one.
Fix bug in SCHBLN feature causing first runnable job found to be ignored.  Thanks to DLW.
Fix worse bug in SCHBLN feature.  Maybe it will actually do something now!
Multi-pack secondary devices.
Recalibrate timeout on AI, attentions tend to get lost sometimes
Before giving out of disk space iocerr, await completion of
 pending file deletions (new partial-consistency scheme).
Make %TPMTA work on STYs.
[1185] 5/23/80
Fix bug causing system job to UFLS momentarily every time it types a character
Now that SCHBLN actually has any effect, it (as predicted) allows compute
 bound jobs to hog the whole machine.  Overhaul the whole priority
 and schbln mechanisms of the scheduler.
[1186] 5/25/80
[1192] 6/2/80
Fix bug where QSMPRP could have 0 in the RH (causing crash with ACs clobbered)
 if a .IOT was retried after an IOCER2 had happened because of random
 access off end of file.  There is still a bug in the ARC device such that
 it loops when this happens instead of noticing the archive file is clobbered.
...(note: a number of unrecorded changes were made in here)...
Sequential paging (.PAGAHD, .PAGRANGE) implemented.
Position-dependent padding of terminal output implemented.
Fixed echoing of ^_ commands interaction with choice of pc ppr for echo.
[1207] 3/12/81
4/5/81 Moon - Small bugs fixed: FINISH on disk channel hangs for a long time
sometimes, Chaosnet doesn't handle window overflow correctly, a user executing
DATAI PI, on a KL-10 crashes the system.
4/18/81 Moon - fixed CBF's kludge for insert-character on C-100 to work on ML/DM.
[1213] 4/22/81
Chaosnet: Removed support for Muppets, added new foreign-protocol protocol
Fixed binary directory SIOT to use SIOKT
[1216] 5/21/81
Make AOSx/SOSx followed by .HANG actually work (code tried but not very well)
TOP-E, TOP-S, TOP-T, TOP-X, TOP-Y and their following arg chars
ignored on input unless user job has asked to see them.
AI TVs support SUPDUP graphics.
[1223] 9/9/81
Added Chaosnet hardware support for ML
[1225] 9/14/81
Change routines that allocate core without respecting NCBCOM, the count
 of pages committed to use by CORGP.  How did this pile of shit ever work?
 Routines changed from calling NMMRQ to IOMQ: GMMP4, UQL1B
TTYGET, TTYSET, CNSGET, etc. work if you don't have the tty.
 So does opening tty channels.  RESET ignored if you don't own it.
New TTYTBL bits %TBOIG, %TBIIN for ignore output, interrupt on input.
Installed a BUG macro similar to the 10X/20X one, and made most
 common halts use it.  This replaces the SYSMSG routine.  Documentation
 is with the macro definition near the front of ITS.  Complete
 functionality requires the latest version of exec DDT (just to make
 it possible to <alt>P from a bugpause).  There are still many halts
 in the system, and perhaps some of these should be converted also.
[1243] 10/17/81
[1244]
Include "$" (don't-reap switch) in directory listing.
Logging of memory ECC errors on system console.
Fix SYALC3 not to print on nonexistent terminals and TVs after the free-screen.
[1251] 11/20/81
Rearrange code so when it says "net: timed out trying to come up",
 if the IMP ready line then turns off and on, it tries to come up again.
 This should make it come up by itself after the IMP breaks & is repaired.
Program around lost-interrupt problem with DTE-20.
Install SOPEN and bp-forms of RENAME, RENMWO, MLINK, DELETE
 and give job devices access to the original bps.
[1256] 12/25/81
Third arg to RFNAME, to get name stored as string.
%DO names for bits for opening disk channels.
%DORWT bit for output opens to make input opens of same file wait
 rather than failing.
Ignore special local editing protocol and supdup graphics input chars
 for all ^_ processing.
[1263] 2/2/82
Change UFD paw-over so files being written when system crashed don't
get their names incremented.
------ pending ------	(?) indicates probably shouldn't be done
Maybe page preemption (in PPIUM) should respect job priorities?
At IFSTOP, what is this garbage "have already hacked this user"?
Make SIOT use KLH's FSCOPY in the unaligned case?  Do up to a page boundary
 with less checking?  Hair?
Put in a value of QRCSW (in QRDCMP) that causes it to read-compare
 only every N ("System Reliability Assurance").
If between the time output finishes being put in the buffer and the
 time TYOSW is unlocked the output interrupt level finishes
 doing the output, and echoing is pending, nobody ever puts
 TTYERQ on the echo list, so the echoing never gets done.  I guess
 typing another character unhangs it.  For some reason this was
 exposed by a user program that got its %TDQOTs out of phase.
 The right way to fix this is not immediately obvious.
 By the way the comments in TS3TTY about finalization are wrong.
SPEED parameter of a TV should be unchangeable or reset on logout.
CORBLK ON DISK-WRITE CHANNEL FUCKS UP GROSSLY
 SEE QBWRA2, WE NEED TO GET TO QSOCL5.  THIS WHOLE THING SUCKS.
 Probably CORBLK'ing on a disk-write-channel should do a FINISH first.  Plausible?
Suggested scheme for ^_ commands to work even if input buffer full, and have a ^_
 command that does an input reset.  Another idea is if you are in super-image input,
 and it dings due to input buffer full, turn off super-image so you can call out.
 Another idea is an interrupt character replaces the last in the buffer if it
 is full; various pointers and counters need updating.
%CBCPY in .CALL CORBLK for JOB sources as well as FILE sources
Support special (non-NCP) links for Arpanet.
.CALL ATTACH WAITS ON TTYTBL WITH TREESW LOCKED, HANGING SYSTEM.
  E.G. RWK TTYFRE
Find out why, in the SWPWSP system, the loading state doesn't work.
 Also find out why it tends to swap from wrong disk and like that.
JOB: open, when no slots are available, should hang for a little while before erring.
When generating a ">" file name for write, should prefer all-numeric
 names over names with non-numeric characters in them.  The same
 should also be true for read.  A reasonable way to do this
 would be to compare first the numeric value, then the whole name
 as sixbit if the numeric values are the same.  The numeric value is
 the left-most contiguous set of digits, converted from decimal to binary,
 with the sign bit turned on if there are any non-digits in the name
 except for trailing blanks.
 The incrementer, however, should continue to do what it does now,
 thus incrementing 6.9 to 6.10
Implement chaining for disk writes (reads are much harder and
 more dubious.)  Speedup is only marginal unfortunately.
New winning echoing scheme to fix "rubout problem"
Automatic time setting to avoid lusers setting incorrect time. (STRTUP)
New lighthouse scheme?
DDTDSK & DSKDMP shouldn't allow crash dumps to get past QSWAPA, but shouldn't
 shaft you by making it impossible to dump out an ITS.  Should they clobber
 with reckless abandon in the swapping area, or respect the TUT?
When gsb names a job .FILE. (DIR), it astonishes pfthmg dragon.
If a job owns a sty which is its own tty, and closes the sty,
 it doesn't get gunned, which apparently could cause anomalies.
Some kludge for a message on top level int job detached while loading.
Make core-link use normal BLKT routines.  CLO have interrupt-on-connected.
core link device should give input-available interrupts (& handle WHYINT)
RMS;PGEXCH
Implement chaos net to self only for machines with no hardware net.
Fix conditionals so you can have chaos without an Arpanet.
Arpanet: Save subtype of destination-dead message in IMPHTB, return in NETHST.
DELETE %TXSFT AND %TXSFL.  (%TXSFL is gone now)
%TOIML is alleged to be obsolete now, likewise %TNIML.  (RIP SSV)
LISTEN on a tty returns device not available if you don't
 own the tty.  It should probably return success saying 0 chars available.
Don't allow deleting FOO < to delete FOO >
RENMWO with a zero 2nd arg turns into RENAME and fucks up grossly.
 I tried to fix this but found that it would break .FDELE.
 Also RENMWO always sets its UUAC to 0 instead of the given channel number arg.
There should be a WHOLIN TTYVAR.
Add additional tty variables, TTYSTS, TTYST1, TTYST2.
EAK would like to be able to access millions of random things as
	tty variables, e.g. cursor pos, number of echo lines, and so forth.
Can get NET: IGNORED ALLOC of a legitimate alloc right after opening a connection.
  Then the receiver has non-zero allocation, but the sender has zero, and hang.
  I can't figure out why this happens; happens from DM a lot.  May have to
  do with starting several ML devices at once?
The net may send illegitimate CLS commands when it goes down, some hosts complain.
  SAIL gets this also, probably it isn't our fault.  Tenex thinks we are rsexec??
Still no fix for swap-write errors problem.  Should barf if it's a file
 page, otherwise assign a new disk address.
For something different from load av look at e.g. #jobs
  unblocked in last second (LUBTM) then avg over longer times
A system call to hand a character which would echo it or rub it out
 as appropriate, knowing the size of what it echos as, etc. -- klh
Compute rnablu and npgwtu 1, 5, and 15-minute averages.
People have mumbled about authors and don't-delete bits.
STYs can get the greeting message out of order, apparently old
  console free messages, and %TDRCR, %TDLF, %TDINI on supdup stys, occasionally.
Character mode on USR: (for lisp).  Can't be done.
In direct connect mode, no protection against overfilling tty input buffer.
  But also no danger of hanging in STYO.  Maybe for STYs should be a mode?
RWK wants to be able to have a newline without cleol but scroll function,
 with more deferred.  The idea is to be able to draw e.g. a box without
 being broken across screen boundaries, or Macsyma display, etc.
 I think the effect can be achieved by temporarily setting %TSMOR+%TSROL,
 then using CRLF.  This will cleol, but you clearly want that since
 it does anyway in the case where it scrolls.  You will have to figure
 out your own more processing.  Macsyma should try this.
For ML and DM, check memory switches better; check for 2 addresses
  from the processor being the same memory.  Not currently detected.
BOJ SIOT
TTY output SIOT put %TDNOP's to align word boundaries then use BLT where
	that seems like it's worth it. -- hard to avoid bugs with %TDMOV -- (?)
Keep a small ring buffer of the names of output files recently closed
 and have a command some place to print this. -- dlw
RVB would like to have device names in links.
Proposed hack to make SYS: a job device. (?)
 A better idea is something similar to 20X logical devices.
 i.e. Do something to allow directories to be bigger.
Sort out MOREing - %TJECH, %TJMOR, %TSMOR, TYVM (?)
OPEN with byte size.
Way to set/adjust the length of a file (open for writing).
Make JOB SIOT byte pointer available to BOJ JOB (for alignment.)
Who lines scheme for non tvs? (?)
Network should remember how many pending INS/INR interrupts there are.
Improve data media code to grok relative positioning; make non-tab
  cursor motion code understand direct positioning; relates to ADM3s.
  KLH claims on a DM2500 not even carriage return works.
">" algorithm loses for 999999.  Wraps around to 000000 and doesn't
  check if that file already exists.
The SPY device doesn't work on free consoles -- pain in debugging ttys.
$0L into pdp6 loses in core job with inf circular list - Ed
There are some problems with core job, retmmp, etc. - see listing
^PA should "work" in comm mode since DDT has started using it.
Optional 6th <JOB> arg to .CALL TRANS
CORBLK to get a fresh page doesn't necessarily do so.  This should be fixed.
PDUMP should also save debugging user variables.
Verification of decoriolis clock when system comes up.
	Right thing is to run a daemon job before typing "in operation",
	also before accepting ^Zs.  Job either gets it through net or asks
	on T00, if time doesn't agree with some file dates.
System knows names of pdp11s on ten11 interface; some of them can
	only be written by one tree at a time. (?)
MRC wants ^P codes to "work" in com mode on ttys of the same type. (?)
Form of OPEN/RENAME/DELETE/MLINK that doesn't do translations?
Improve dm daemon stuff and turn on elsewhere; e.g. need
	a demsig interrupt, need better dmnstr stuff.
VSCLK wants to do JSP E,CHECK, but first must provide mechanism for
	variable PIA devices, e.g. IMP, NLPT.
FORCE + FLUSH means something on input?
Disk dir paw over changes for when file was open for writing when system crashed
^PS's saved cursor position should be per-tty/per-job.
Undeletion.
User enableable interrupt on being blocked for more than C(user variable) seconds?
Macro to push PI status and turn more channels off, macro to pop PI status. (?)
	This a little complicated since CONI PI,A ? CONO PI,(A) doesn't work.
	Correct sequence is CONI PI,AC ? ANDI AC,177 ? ... ? CONO PI,2000(AC)
System job can get hung if another job is typing on system console;
	the job waits for buffer space with TYOSW locked.
	Note that it must wait this way for separation of echoing/mp output.
Handle figuring out which packs are mounted the way the salvager does?
 This would be fairly complicated to do.  Perhaps the salvager could tell the system??
On MC, respond correctly to disk powered off and back on.
Replace DSKDMP with DDT on AI, ML, DM ?  Replace DDTDSK with (better) DSKDMP on MC ?
	Note- DSKDMP has been improved to have compatible symbol table,
	save ACs, etc. so not much need to make DDTDSK work on other machines.
iotbts - control waiting for input, what returned if none, output don't hang mode
	These should be in LH(CTLBTS) rather than separate IOTBTS user var.
automatic unhanging of LPT; both old & new have this problem (different problems).
	Seems to have stopped happening 10/25/77
make RSSIZE work on all devices
Implement %QAOUT - ?
Disk allocation system call (e.g. for KLFEDR.)
KL MUSIC support.
Dynamic adding and deleting of core pages (?)
  requires changing page eviction in core job to be modularized out of sys var grower
  Note page eviction has been mostly flushed now!
.ATTY and .DTTY to a BOJ JOB forced by that BOJ JOB;
 e.g. for tektronix graphics device.
Eliminate IOC error codes, and have IOC errors return open loss codes.
Cause OPNL's to pop the LSWPR not all the way, but rather
 to a remembered level. They should also flush P down to a remembered
 level and then POPJ. This will allow recursive ERRSET'ing within the system,
 and further reduce the differences between system call routines and
 other subroutines. (?)
The who-line should mention it if you are being queried for a com link.
Make run status in who-line 9 characters instead of 6. ("+FOOBARSI")
Eventually make core job part of sys job.
Have SYS job attend to ^Z's by creating an inferior, disowning it
	and attaching it to the tty. (?)
Have a UUO that Xfer's job's entire user var block into it. (?)
New sys call to get # bytes of buffer space full and # bytes empty
 eg # bytes of output not yet transferred, and # bytes can be output
 before buffer is full. (?)
Call I/O related routines with LH(IOCHNM) in I instead of A; and
 otherwise restandardize AC usage.
Alternate keypad mode and alternate character set mode on VT52s  (?)
Redesign the file system?
Support RH20, KS10, and Foonly-10.
---

RMS@MIT-AI 05/16/78 21:38:19 Re: JOBREU doesn't really win
To: MOON at MIT-AI, RMS at MIT-AI
Reuse of job devices has the problem that the job device
needs some time to settle down and do the jobreu.
If you just close and reopen the ML device, the handler
is never ready in time.  If you sleep for 1 second, then
it usually is ready, provided that it was idle when you
closed it.  It takes 3 seconds for it to become idle
just after it is opened.  Of course, real uses don't just
close and reopen this way, but the point should be clear:
it is necessary for the handler to indicate in advance that it
will be reusable.  When a job tries to open ML:, if there are
no handlers in JOBREU, it should look for one which has JBCG set and says that
it will do a JOBREU, and wait for that one to either do it or kill itself.
At that point, looping back to the existing OPEN code will win.

Add wholine & PEEK state character for loading, similar to >
for swap-blocked.  Add _ to wholine.
